/**
 * Created by Dave on 2017/3/10.
 */

angular.module('NatureCloud').factory('AppConfigService', function ($http) {
    return {
        /*
         * 参数说明：env-环境相关数据
         * env格式{
         *  namespace:<命名空间名>,
         *  name:<环境名，如dev，同一命名空间下可重复>,
         *  serviceName:<服务名>,
         *  [createTime:<创建时间，可提供，但无效>],
         *  value:{
         *   <变量Key-Value对>
         *  }
         *  [hide:<是否隐藏，可提供，但无效>]
         * }
         * 返回值：false|env数据(增加了字段——version：环境量版本)
         */
        addEnv:function(env){

        },
        /*
         *参数说明：ns-命名空间名，name-环境名，[version-环境量版本]
         * 返回值：false|<变量Key-Value对>
         */
        getEnv:function(ns,imagename,version,envname){
            var data={
                namespace:ns,
                imageName:imagename,
                version:version,
                name:envname
            }
            return $http.post('/appConfig/getEnv',data).then(function (response) {
                if(response && response.data){
                    //only need the  data returned
                    response.status =  response.status||200 ;
                    return response.data ;
                }else{
                    return response;
                }
            });
        },
        /*
         *参数说明：ns-命名空间名，name-环境名，[version-环境量版本]
         * 返回值：false|true
         */
        delEnv:function(ns,name,version){
            //隐藏之
        },
        /*
         * 参数说明：cfg-参数文件
         * cfg格式{
         *   filepath:<>,
         *   namespace:<>,
         *   serviceName:<>,
         *   [createTime:<创建时间，可提供，但无效>],
         *   value:<模板值>
         *   [hide:<是否隐藏，可提供，但无效>]
         * }
         * 返回值：false|cfg数据(增加了字段——version：文件版本)
         */
        addConfigFile:function(cfg){
        },
        deleteConfigFile:function(cfg){

        },
        /*
         * 参数说明：cfs-参数文件集
         * cfs格式{
         *   namespace:<>,
         *   serviceName:<>,
         *   serviceVersion:<>,
         *   files:[
         *       {
         *           filepath:<>,
         *           version:<>
         *       }
         *   ]
         * }
         */
        addConfigFileSet:function(cfs){
            return $http.post('/appConfig/upsertConfigFileSet',cfs).then(
                function (response) {
                    if(response && response.data){
                        //only need the  data returned
                        response.status =  response.status||200 ;
                        return response.data ;
                    }else{
                        return response;
                    }
                });
        },
        getConfigImpl:function(ns,name,version,envname,envversion){
        },
        getlistEnv: function (ns,name,version) {
            var url = '/appConfig/listEnv?namespace='+ ns+'&image='+name+'&version='+version;
            return $http.get(url).then(function (response) {
                if(response && response.data){
                    //only need the  data returned
                    response.status =  response.status||200 ;
                    return response.data ;
                }else{
                    return response;
                }
            });
        },
        getlistConfigFileSet:function(ns,name){
            var url = '/appConfig/listConfigFileSet?namespace=' + ns + '&image=' + name;
            return $http.get(url).then(function (response) {
                if(response && response.data){
                    //only need the  data returned
                    response.status =  response.status||200 ;
                    return response.data ;
                }else{
                    return response;
                }
            });
        },
        getlistConfigFileSetSvc:function(ns,name){
            var url = '/appConfig/listConfigFileSetSvc?namespace=' + ns + '&image=' + name;
            return $http.get(url).then(function (response) {
                if(response && response.data){
                    //only need the  data returned
                    response.status =  response.status||200 ;
                    return response.data ;
                }else{
                    return response;
                }
            });
        },
        updateConfigEnv:function(envs){
            return $http.post('/appConfig/updateSetEnvs',envs).then(
                function (response) {
                    if(response && response.data){
                        //only need the  data returned
                        response.status =  response.status||200 ;
                        return response.data ;
                    }else{
                        return response;
                    }
                });
        },

        getOneConf: function (ns,serviceName,imageTag) {
            var url = '/appConfig/oneConf?namespace='+ ns+'&serviceName='+serviceName+'&imageTag='+imageTag;
            return $http.get(url).then(function (response) {
                if(response && response.data){
                    //only need the  data returned
                    response.status =  response.status||200 ;
                    return response.data ;
                }else{
                    return response;
                }
            });
        },

        updateConf: function (ns,serviceName,imageTag,confName) {
            var cfs={
                namespace: ns,
                serviceName:serviceName,
                version:imageTag,
                confName:confName
            };
            return $http.post('/appConfig/updateConf',cfs).then(
                function (response) {
                    if (response && response.data) {
                        //only need the  data returned
                        response.status = response.status || 200;
                        return response.data;
                    } else {
                        return response;
                    }
                });
        }
    }
});
